    // These functions set string values. If |copy| is true (1) the value will be
    // copied instead of referenced. It is up to the user to properly manage
    // the lifespan of references.
    tfn_cef_string_wide_set = function(const src: PWideChar; src_len: csize_t;  output: PCefStringWide; copy: Integer): Integer; cdecl;
    tfn_cef_string_utf8_set = function(const src: PAnsiChar; src_len: csize_t; output: PCefStringUtf8; copy: Integer): Integer; cdecl;
    tfn_cef_string_utf16_set = function(const src: PChar16; src_len: csize_t; output: PCefStringUtf16; copy: Integer): Integer; cdecl;

    tfn_cef_string_set = function(const src: PCefChar; src_len: csize_t; output: PCefString; copy: Integer): Integer; cdecl;

    // Makros

    // These functions clear string values. The structure itself is not freed.
    tfn_cef_string_wide_clear = procedure(str: PCefStringWide); cdecl;
    tfn_cef_string_utf8_clear = procedure(str: PCefStringUtf8); cdecl;
    tfn_cef_string_utf16_clear = procedure(str: PCefStringUtf16); cdecl;

    tfn_cef_string_clear = procedure(str: PCefString); cdecl;

    // These functions compare two string values with the same results as strcmp().
    tfn_cef_string_wide_cmp = function(const str1, str2: PCefStringWide): Integer; cdecl;
    tfn_cef_string_utf8_cmp = function(const str1, str2: PCefStringUtf8): Integer; cdecl;
    tfn_cef_string_utf16_cmp = function(const str1, str2: PCefStringUtf16): Integer; cdecl;

    // These functions convert between UTF-8, -16, and -32 strings. They are
    // potentially slow so unnecessary conversions should be avoided. The best
    // possible result will always be written to |output| with the boolean return
    // value indicating whether the conversion is 100% valid.
    tfn_cef_string_wide_to_utf8 = function(const src: PWideChar; src_len: csize_t; output: PCefStringUtf8): Integer; cdecl;
    tfn_cef_string_utf8_to_wide = function(const src: PAnsiChar; src_len: csize_t; output: PCefStringWide): Integer; cdecl;

    tfn_cef_string_wide_to_utf16 = function (const src: PWideChar; src_len: csize_t; output: PCefStringUtf16): Integer; cdecl;
    tfn_cef_string_utf16_to_wide = function(const src: PChar16; src_len: csize_t; output: PCefStringWide): Integer; cdecl;

    tfn_cef_string_utf8_to_utf16 = function(const src: PAnsiChar; src_len: csize_t; output: PCefStringUtf16): Integer; cdecl;
    tfn_cef_string_utf16_to_utf8 = function(const src: PChar16; src_len: csize_t; output: PCefStringUtf8): Integer; cdecl;

    { Additional }
    tfn_cef_string_to_utf8 = function(const src: PCefChar; src_len: csize_t; output: PCefStringUtf8): Integer; cdecl;
    tfn_cef_string_from_utf8 = function(const src: PAnsiChar; src_len: csize_t; output: PCefString): Integer; cdecl;
    tfn_cef_string_to_utf16 = function(const src: PCefChar; src_len: csize_t; output: PCefStringUtf16): Integer; cdecl;
    tfn_cef_string_from_utf16 = function(const src: PChar16; src_len: csize_t; output: PCefString): Integer; cdecl;
    tfn_cef_string_to_wide = function(const src: PCefChar; src_len: csize_t; output: PCefStringWide): Integer; cdecl;
    tfn_cef_string_from_wide = function(const src: PWideChar; src_len: csize_t; output: PCefString): Integer; cdecl;


    // These functions convert an ASCII string, typically a hardcoded constant, to a
    // Wide/UTF16 string. Use instead of the UTF8 conversion routines if you know
    // the string is ASCII.
    tfn_cef_string_ascii_to_wide = function(const src: PAnsiChar; src_len: csize_t; output: PCefStringWide): Integer; cdecl;
    tfn_cef_string_ascii_to_utf16 = function(const src: PAnsiChar; src_len: csize_t; output: PCefStringUtf16): Integer; cdecl;

    tfn_cef_string_from_ascii = function(const src: PAnsiChar; src_len: csize_t; output: PCefString): Integer; cdecl;


    // These functions allocate a new string structure. They must be freed by
    // calling the associated free function.
    tfn_cef_string_userfree_wide_alloc = function(): PCefStringUserFreeWide; cdecl;
    tfn_cef_string_userfree_utf8_alloc = function(): PCefStringUserFreeUtf8; cdecl;
    tfn_cef_string_userfree_utf16_alloc = function(): PCefStringUserFreeUtf16; cdecl;

    tfn_cef_string_userfree_alloc = function(): PCefStringUserFree; cdecl;


    // These functions free the string structure allocated by the associated
    // alloc function. Any string contents will first be cleared.
    tfn_cef_string_userfree_wide_free = procedure(str: PCefStringUserFreeWide); cdecl;
    tfn_cef_string_userfree_utf8_free = procedure(str: PCefStringUserFreeUtf8); cdecl;
    tfn_cef_string_userfree_utf16_free = procedure(str: PCefStringUserFreeUtf16); cdecl;

    tfn_cef_string_userfree_free = procedure(str: PCefStringUserFree); cdecl;




